package controller;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import model.Kunde;
import view.KundenDetailAnzeige;
import view.KundenListeAnzeige;
import view.KundenSuchLeser;
import business.KundenLogik;
import business.LogikManager;

public class ButtonListener implements ActionListener {

	public enum Action{
		Suche_Kunden
	}
	
	
	private Action action;
	
	private KundenDetailAnzeige detailAnzeige;
	private KundenListeAnzeige listenAnzeige;
	private KundenSuchLeser suchLeser;
	
	private KundenLogik kundenHandler = new LogikManager();
	
	public ButtonListener(KundenListeAnzeige listenAnzeige,KundenDetailAnzeige detailAnzeige,
						KundenSuchLeser suchLeser,Action action){
		
		if(listenAnzeige == null || detailAnzeige == null 
				|| suchLeser == null || action ==null){
			throw new IllegalArgumentException("listenAnzeige: " + listenAnzeige +
												", detailAnzeige: " + detailAnzeige +
												", suchLeser: " + suchLeser +
												", action: " + action);
		}

		this.action = action;
		this.detailAnzeige = detailAnzeige;
		this.listenAnzeige = listenAnzeige;
		this.suchLeser = suchLeser;
		
	}
	
	@Override
	public void actionPerformed(ActionEvent arg0) {

		switch (this.action) {
		case Suche_Kunden:
			sucheKunden(arg0);
			break;

		default:
			break;
		}
		
	}

	private void sucheKunden(ActionEvent event) {

		String eingabe = suchLeser.liesKundenSuche();
		List<Kunde> kunden = null;
		if(isInteger(eingabe)){
			kunden = kundenHandler.getKundenListeZuNummer(eingabe);
		}else{
			kunden = kundenHandler.getKundenListeZuName(eingabe);
		}
		listenAnzeige.zeigeKundenListe(kunden);
		
	}

	private boolean isInteger(String eingabe) {
		try{
			Integer.parseInt(eingabe);
			return true;
		}catch (Exception e) {
		}
		return false;
	}

}
